<!--
 * @Descripttion: 
 * @Version: 
 * @Author: gaohj
 * @Date: 2022-10-27 17:07:29
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2022-10-27 17:53:20
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        // 第一种  i-- + splice  while + 数组.shift()
        // 第二种倒着删除  
        // 以上是数组塌陷的解决方案 
        // 塌陷就是为了去重准备  

        
        var arr2 = [9,9,3,1,9, 6, 1,10, 2, 5, 11, 4, 1, 7];

        //第一种方案 创建空数组  遍历原数组 原数组元素不在空数组中
        // 那么加入空数组 
        // var arr = [];
        // for(var i=0;i<arr2.length;i++){
        //     if(arr.indexOf(arr2[i]) == -1){
        //         arr.push(arr2[i]);
        //     }
        // }

        // console.log(arr);// 就是去重以后的 

        //第二种方案  
        // 先排序  拿当前元素跟后一个进行比较
        // 如果两个相同干掉一个 

        // arr2.sort(function(a,b){return a-b}); // 排序以后的

        // for(var i=0;i<arr2.length;i++){
        //    if(arr2[i]==arr2[i+1]){
        //         arr2.splice(i,1);
        //         i--;
        //    }
        // }
        // console.log(arr2);

        //第三种方案直接遍历  
        //如果 第一个后边 有跟第一个一样的 那么久删除 

        for(var i=0;i<arr2.length;i++){
            var index = arr2.indexOf(arr2[i],i+1);
            if(index !== -1){
                arr2.splice(index,1);
                i--;
            }

         }

        //  console.log(arr2);


        // 第四种 集合数据结构

        // 集合天生不接受重复数据  
        // 集合中的数据一定是唯一的   

        // 数组->集合->数组  
        // new Set([数据1,数据2,数据3,...数据n]);


        // 集合-> 数组  

        // 1.Array.from(集合)
        // 2.    ...集合 相当于把集合的数据展开   三个点 


    //    var res =  Array.from(new Set(arr2));
    //    document.write(res);

    //    var res =  [...new Set(arr2)];
    //    document.write(res);


    // ... 用来展开数据 

    document.write([...arr2])
    </script>
</body>
</html>